home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Deutsche Edition 1
/
Deutsche Edition 1.iso
/
amok
/
031-040
/
amok35
/
spellchecker
/
spellchecker.dok
< prev
next >
Wrap
Text File
|
1993-11-04
|
14KB
|
241 lines
SpellChecker - kurze Dokumentation für Benutzer
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Bei diesem Programm handelt es sich, wie der Name schon sagt, um ein
Programm zur Überprüfung der korrekten Schreibweise von Worten in
Textfiles. Am besten funktioniert das natürlich bei reinen
ASCII-Texten, wie sie z.B. Editoren wie DME oder M2Emacs erzeugen. Die
Files dürfen auch Steuerzeichen enthalten, z.B. die Amiga-spezifischen
Escape- oder CSI-Sequenzen für Farbumschaltung usw. Diese
Steuerzeichen werden einfach überlesen. In Prinzip funktioniert das
Programm auch mit Files, die von Textverarbeitungsprogrammen erzeugt
worden sind, allerdings kann es Probleme geben bei Textverarbeitungen,
die wie Beckertext den Text mit Zeilen konstanter Länge abspeichern.
Man kann dann zwar mit dem SpellChecker falsche Buchstaben ändern,
aber wenn sich die Länge einer Zeile ändert, wird das
Textverarbeitungsprogramm das File später nicht mehr korrekt einlesen.
Die meisten Textverarbeitungen erlauben es allerdings, Texte auch im
ASCII-Format zu speichern. Dann kann man den SpellChecker ohne
Bedenken benutzen.
Im Prinzip funktioniert der SpellChecker folgendermaßen: In einer
Liste sind viele richtig geschriebene Worte vermerkt. Soll nun ein
Text auf korrekte Schreibweise überprüft werden, so wird von diesem
Text Wort für Wort gelesen und nachgesehen ob dieses Wort in der Liste
vorhanden ist. Ist es vorhanden, so wird es als richtig angenommen und
es wird das nächste Wort untersucht, andernfalls könnte es falsch sein
und der Benutzer muß selber entscheiden.
Das ist also im Prinzip ganz einfach, aber wo bekommt man die Liste
mit den Worten her? Zumal an die Liste noch folgende Forderungen zu
stellen sind: Sie sollte den gesamten Grundwortschatz enthalten, also
mindestens 10000 Worte, sie sollte nach Möglichkeit keine
Rechtschreibfehler enthalten und ebenfalls keine extrem seltenen
Worte, welche nur Platz wegnehmen: Die Worte haben wir zum Glück
schon, nämlich in den Textfiles auf Diskmagazinen und PD-Disks (z.B.
Amiga-Juice-Magazin oder AMOK-Disk). Wir brauchen also nur noch ein
Programm, das diese Texte durchsucht, die einzelnen Worte extrahiert
und in die Liste einträgt. Vermerkt man in der Liste nicht nur die
Worte, sondern auch deren Häufigkeit, mit der sie in den Textfiles
auftraten, so kann man später alle Worte mit geringer Häufigkeit
löschen. Dadurch vernichtet man sowohl die falsch geschriebenen Worte
als auch die extrem seltenen. Damit wäre auch schon das Prinzip
erklärt, jetzt zur Benutzung des Programmes.
Starten Sie das Programm von der Workbench oder vom CLI aus. Beachten
sie aber, daß das Programm das Device T: und die ARP-Library benötigt.
(Das Device T: dient zum Zwischenspeichern temporärer Dateien und kann
z.B. folgendermaßen angemeldet werden: Makedir ram:t Assign T: ram:T
Die ARP-Library sollte ohnehin jeder ernsthafte Amiga-Benutzer
besitzen, sie ist z.B. auf der AmigaJuice15-PD-Diskette enthalten und
muß nach Libs: kopiert werden.) Außerdem sollten sie vor dem Starten
des Programmes den freien Speicher überprüfen. Pro Wort werden 16 Byte
benötigt, bei 10000 Worten also schon 160000 Byte allein für die
Wörterliste. Sie sollten also schon mindestens 300 kByte freien
Speicher haben, bevor sie das Programm starten. (Falls Ihr Speicher
sehr klein ist, sollten Sie das Device T: lieber auf einer Diskette
oder Festplatte anmelden). Starten Sie das Programm nun endlich. Sie
sehen vor sich ein Window mit 10 Anklick-Gadgets und einem
StringGadget. Sie können das Fenster wie üblich verschieben oder in
den Hintergrund klicken. Durch Anklicken von "Quit" (links unten) oder
des Window-Close-Gadgets (links oben) beenden sie das Programm wieder.
Wie im Textfeld angezeigt wird, enthält das Programm momentan 0
Wörter. Sie müssen also zunächst ein Lexikon einladen oder eines
generieren. Die Generierung ist nur einmal nötig, danach kann man das
Lexikon abspeichern, und immer wieder einladen. Eigentlich brauchen
Sie die Generierung überhaupt nicht, da ich mit diesem Programm
mindestens ein Lexikon mitliefern werde. Die Generierung ist aber
nützlich, wenn man ein vorhandenes Lexikon erweitern will oder ein
neues für eine andere Sprache aufbauen will. Für die Generierung
braucht man mindestens ein (großes) Textfile, das die Worte enthält,
die man in das Wörterbuch aufnehmen will. Dieses Textfile darf
durchaus Steuerzeichen enthalten, sofern sie nicht mit Worten
verwechselt werden können. Von diesem Programm werden zusammenhängende
Buchstaben generell als Worte aufgefaßt. Alles was kein Buchstabe ist,
trennt Worte voneinander und wird ignoriert, insbesondere werden auch
die Amiga-spezifischen ESC- und CSI-Steuercodes ignoriert. Weitere
Einzelheiten stehen in dem Text "Genauere Information". Am besten
kopieren sie die Files, die sie für die Generierung verwenden wollen,
alle auf eine formatierte Diskette. Dann verbinden Sie alle diese
Texte mit dem Join-Befehl, z.B.:
Join df0:Text1 df0:Text2 df0:NochEinText AS df1:GrossesTextFile
Nun kann die eigentliche Generierung beginnen. Es befindet sich also
auf DF1: ( oder bei genügend Ram in der RAM-DISK) ein großes Textfile
mit den Worten, die in das Lexikon aufgenommen werden sollen. Klicken
Sie das Gadget "ExpandLex" an. Es erscheint der ARP-FileRequester.
Dieser FileRequeser ist so logisch aufgebaut, daß ich mir eine
Erklärung sparen möchte, wahrscheinlich kennen sie ihn ohnehin schon.
Laden sie das File nun ein. Der Requester verschwindet, alle Gadgets
werden gepunktet dargestellt und der Mauszeiger schläft. Jetzt wird
der Text durchsucht und die Worte werden in das Lexikon eingetragen.
War das Lexikon vorher leer, so wird ein Neues aufgebaut, andernfalls
werden die gefundenen Worte zum alten Lexikon hinzugefügt. Diese
Generierung benötigt etwas Zeit, z.B. hat es bei mir über eine Stunde
gedauert, um aus einen 600 kByte langen Text ein Wörterbuch mit 10000
Worten aufzubauen. Dabei hatte ich den Quelltext in der Ram-Disk, auf
Diskette hätte es also noch länger gedauert. Aber wie schon gesagt ist
die Generierung eines neuen Lexikons höchstens ein mal erforderlich.
Ist die Generierung abgeschlossen, so ertönt ein kurzer Piepton und im
Textfeld steht jetzt, wie viele Worte das Lexikon enthält. In gleicher
Weise können Sie das Lexikon mit anderen Texten weiter ausbauen.
Am besten speichern sie das Lexikon jetzt zuerst einmal ab. Klicken
Sie auf SaveLex. Es erscheint wieder der FileRequester. Wählen sie das
Laufwerk aus, ändern sie eventuell den Filenamen im Stringgadget und
klicken sie auf OK zum abspeichern.
Jetzt können sie erstmal eine Pause einlegen und den Rechner etwas
ausruhen lassen.
Haben sie das Programm verlassen, so starten sie es wieder und klicken
auf "LoadLex" um das vorher gespeicherte Lexikon einzuladen. Das
Lexikon enthält jetzt fast alle Wörter, die in den Texten, die sie zur
Generierung benutzt haben, vorkamen. Also auch Eigennamen, seltene
Worte und falsch geschriebene Worte. Im Textfeld steht unter der
Wortanzahl noch der Text MinCount und MaxCount. Diese beiden Felder
zeigen an, wie häufig die Worte, die im Lexikon stehen, in den zur
Generierung benutzten Texten gefunden wurden. MinCount gibt die
minimale Häufigkeit, MaxCount die maximale Häufigkeit an. MinCount hat
in der Regel den Wert eins, da in Text einige Worte nur einmal
auftauchten, z.B. Straßennamen oder Schreibfehler. MaxCount wird einen
recht großen Wert annehmen, da Worte wie "der" "die" "ein" in der
Regel recht oft vorkommen. Die Worte mit geringer Häufigkeit wird man
in der Regel aus den Lexikon entfernen wollen. Klicken Sie dazu
"CleanLex" an. Nach einigen Sekunden ertönt ein Piep, die Anzahl Worte
hat sich verringert und MinCount hat sich erhöht. CleanLex löscht also
aus dem Lexikon alle Worte mit der momentan geringsten Häufigkeit. Das
erste Klicken auf "CleanLex" löscht also alle Worte der Häufigkeit 1,
das nächste Anklicken die Worte der Häufigkeit 2 usw. Klicken Sie
sooft CleanLex, bis das Lexikon eine handliche Größe angenommen hat,
also ca. 10- 20000 Worte und speichern sie es dann ab.
Nun können Sie Ihre Texte auf richtige Schreibweise überprüfen:
Klicken Sie auf "CheckText" und laden sie den Text ein. Jetzt wird der
Text durchsucht. Wird ein Wort nicht im Lexikon gefunden, so wird es
im StringGadget angezeigt und kann dort eventuell korrigiert werden.
Achtung: Das Wort wird in jeden Fall in der Form, wie es im
StringGadget steht, in ihren Text übernommen. Das StringGadget hat die
bekannten Edierfunktionen wie Cursorbewegung, Einfügen, Löschen usw.
Klicken sie jetzt auf "Ignore" oder betätigen sie nur die
Return-Taste, so wird das Wort zwar im Text verändert, aber es wird
nicht ins Lexikon übernommen. Klicken Sie aber auf "AddToLex", so wird
das Wort ins Lexikon übernommen. Verfahren Sie mit allen weiteren
gefundenen Worten entsprechend. Sie können die Korrektur auch
vorzeitig abbrechen, indem Sie "Quit" oder das CloseGadget anklicken.
Das TextFile bleibt dann unverändert und sie kommen wieder ins
Hauptmenü. Noch eine Bemerkung. Das Programm unterscheidet Groß- und
Kleinschreibung. Es weiß, daß am Satzanfang, also nach ".", ":", "!"
oder "?" immer groß geschrieben wird. Im Lexikon stehen die Worte in
ihrer natürlichen Schreibweise. Fügen sie also nicht Worte, die nur
weil sie am Satzanfang stehen, momentan groß geschrieben sind, dem
Lexikon hinzu! Nocheinmal: Wenn in dem StringGadget ein groß
geschriebenes Wort steht, so dürfen Sie nur dann AddToLex anklicken,
wenn es sich um ein Hauptwort, ein Verb das als Hauptwort gebraucht
wird, oder um einen Namen handelt: Beispiel für wirklich große Worte:
"Baum", "Stuhl", "das Neue ist ..." "durch Lesen", "Stefan". Alles
andere wie "der" "alles" "hier" usw. darf dem Lexikon nur in kleiner
Schreibweise zugeführt werden. (Im Textfeld sehen sie auch die
Umgebung des als falsch erkannten Wortes, wobei alle Zeichen, die
nicht druckbar sind, durch einen Unterstrich '_' dargestellt werden).
Nun zum DeleteGadget: Hiermit ist es möglich, gezielt Worte aus dem
Lexikon zu entfernen. Geben sie das Wort im StringGadget ein und
Drücken sie Return oder Klicken sie auf "DelWord". Das Wort wird im
Lexikon gesucht und falls gefunden auch gelöscht. Damit kann man
leicht Worte, von denen man vermutet, das sie im Lexikon sind, sie
dort aber nicht hingehören, löschen, z.B. Namen. Durch anklicken von
"Quit" oder des CloseGadgets verlassen sie diesen Modus wieder.
Als letztes Gadgets bleibt "Export". Damit kann man alle Worte des
Lexikons in eine Textdatei schreiben. Diese Datei kann man dann mit
einen Texteditor ansehen. Das beruhigt, falls man befürchtet, daß sich
irgendwelcher Müll im Lexikon befindet. Diese Datei ist eine
Textdatei, deshalb kann man sie mit der Editor verändern, z.B. Worte
löschen, und dann mit "ExpandLex" als Quelldatei für die Generierung
eines Lexikons benutzen.
Übrigens werden auch beim Anklicken von CleanLex alle gelöschten Worte
in die Datei T:CleanLex.Txt exportiert. Aus dieser Datei kann man z.B.
alle wirklich unerwünschten Worte löschen und den Rest dann mit
ExpandLex wieder dem Lexikon hinzufügen.
Das sollte eigentlich für die Benutzung des SpellChecker ausreichen,
nähere Information steht in File "Weitere Information".
Noch etwas: Das Programm sollte im Prinzip auch mit anderen Sprachen
als Deutsch oder Englisch funktionieren, allerdings sollte man für
jede Sprache ein eigenes Lexikon anlegen.
Stefan Salewski, 1. März 1990
Noch etwas zu den Lexika:
~~~~~~~~~~~~~~~~~~~~~~~~~
Mit dem SpellChecker liefere ich die Lexika GermanLexikon und
EnglishLexikon mit. Für die Generierung des deutschen Lexikons habe
ich die Texte des Diskmagazins AmigaJUICE 15 & 16, einige Dok-Files
der AMOK-PD-Disks und einige eigene Textfiles benutzt. Das erzeugte
Lexikon enthielt ursprünglich ca. 14000 Worte. Nach zweimaligem
anklicken von "CleanLex" waren es allerdings nur noch ca. 6000. Ich
habe das Lexikon dann zur Kontrolle noch einmal exportiert,
durchgesehen und wieder importiert. Beim Durchsehen mußte ich leider
doch noch einige hundert Worte löschen. Insbesondere waren noch viele
Namen und Computerausdrücke wie "rastPort" u.s.w vorhanden. Auch waren
einige Worte in großer Schreibweise vorhanden. Der Grund dafür ist,
das in einigen Texten neue Sätze angefangen werden, ohne den
vorherigen Satz mit einem Satzzeichen zu beenden. Deshalb funktioniert
die Prozedur, die bei der Generierung jeweils das erste Wort eines
Satzes ignorieren soll, dann nicht korrekt. Falls man also ein Lexikon
selber generieren will, empfiehlt es sich doch, es zu exportieren, es in
einen Editor einzuladen und durchzusehen. Das ist allerdings keine
sehr große Mühe; ich habe für die 6000 Worte ca 2 Stunden gebraucht.
Für die Generierung des englischen Lexikons habe ich die Doc-Files der
Fish-Disketten benutzt. Dabei entstand aus einem 1 MByte großen
Quelltext ein Lexikon mit ca. 7000 Worten. Auch hier habe ich durch
zweimaliges Anklicken von "CleanLex" alle Worte, die nur ein- oder
zweimal vorkamen, gelöscht, so daß noch ca 4000 Worte übrig blieben.
Diese habe ich dann ebenfalls exportiert und mit einen Editor (DME)
durchgesehen, wobei ich jeden mir unbekannte Wort gelöscht habe.
Zusätzlich habe ich noch alle groß geschriebenen Worte ( hauptsächlich
Namen) gelöscht, so daß nur ca 3000 Worte übrig geblieben sind.
Die Lexika sind also etwas kleiner geworden, als ich ursprünglich
geplant hatte, aber dafür enthalten sie wohl auch kaum
Rechtschreibfehler und nur wirklich häufig benutzte Worte. Wer eigene
Texte hat, kann sie ja mit "ExpandLex" jederzeit erweitern, aber auch
bei der normalen Benutzung mit "CheckText" werden sie sich allmählich
vergrößern.
Stefan Salewski, 21.3.90